var person={fname:"Bill",lname:"Gates",age:56};
var wn = 'width'
var w = 300
person[wn] = w  // 使用字段名称的变量为对象添加字段

person.x=12;
for (x in person) // 在对象里循环，x 是字符名称
{
	console.log(x,':', person[x]) 
}
// obj[xxx] 在对象obj中，取出字段xxx的值


var p1 = new Person('jack', 12)
console.assert(p1.hasOwnProperty('x') === false)
console.assert(p1.hasOwnProperty('name') === true)
console.assert(p1.hasOwnProperty("age") === true)
console.assert(p1.name == 'jack')
p1.changeName()
console.assert(p1.name == 'jack_tag')
p1.x = 2;
console.assert(p1.hasOwnProperty('x'))
console.log(p1.constructor.toString()) // 指的就是Person函数的构造体


function Person(name, age) {
    this.name = name;
    this.age = age;
    this.changeName = function () {
        this.name += "_tag"
    }
}